package com.qsw.qswcommonlib.util.math;

/**
 * 平面点及相关计算
 */
public class PointDEX {
    private double x;
    private double y;

    public PointDEX() {

    }

    public PointDEX(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public void setX(double x) {
        this.x = x;
    }

    public void setY(double y) {
        this.y = y;
    }

    public double getX() {
        return x;
    }

    public double getY() {
        return y;
    }

    /**
     * 判断两点是否重合
     *
     * @param p 另一个点
     * @return true：重合；false：不重合
     */
    public boolean equals(PointDEX p) {
        return equals(p.getX(), p.getY());
    }

    /**
     * 判断两点是否重合
     *
     * @param pX 另一个点X
     * @param pY 另一个点Y
     * @return true：重合；false：不重合
     */
    public boolean equals(double pX, double pY) {
        return this.x == pX && this.y == pY;
    }

    /**
     * 计算当前点和输入点p之间的距离
     *
     * @param p 另一个点
     * @return 两点距离
     */
    public double getDistance(PointDEX p) {
        return getDistance(p.getX(), p.getY());
    }

    /**
     * 计算当前点和输入点p之间的距离
     *
     * @param pX 另一个点X
     * @param pY 另一个点Y
     * @return 两点距离
     */
    public double getDistance(double pX, double pY) {
        return Math.sqrt(Math.pow(x - pX, 2) + Math.pow(y - pY, 2));
    }
}